// /*
//  * @features: 功能
//  * @description: 说明
//  * @Date: 2021-10-28 23:26:43
//  * @Author: judu233(769471424@qq.com)
//  * @LastEditTime: 2021-10-29 22:31:46
//  * @LastEditors: judu233
//  */
// import { EDITOR } from "cc/env";
// import c3d from "../cc";
// import { FBOComponent } from "./FBOComponent";

// /*
//  * @features: 功能
//  * @description: 说明
//  * @Date: 2021-10-28 23:26:43
//  * @Author: judu233(769471424@qq.com)
//  * @LastEditTime: 2021-10-28 23:35:11
//  * @LastEditors: judu233
//  */
// export class FBOClone extends FBOComponent {
//     _targetGroupOld
//     _targetScaleXOld
//     _targetWidthOld
//     _targetHeightOld
//     _targetAngleOld
//     _targetScaleYOld

//     public get target(): c3d.Node {
//         return this._target;
//     }
//     public set target(value: c3d.Node) {
//         this._target = value;
//         this.updateTarget();
//         this.node.width = this._target.width;
//         this.node.height = this._target.height;
//     }

//     /**"是否需要动态监测目标旋转角度" */
//     syncAngle = false;

//     /**"是否需要动态监测目标缩放大小" */
//     syncScale = false;
//     private _offsetX = 0;
//     public get offsetX() { return this._offsetX; }
//     /**"FBO 渲染区域 X轴方向偏移量" */
//     public set offsetX(value) {
//         this._offsetX = value;
//         this.updateTarget();
//     }

//     private _offsetY = 0;
//     public get offsetY() { return this._offsetY; }
//     public set offsetY(value) {
//         this._offsetY = value;
//         this.updateTarget();
//     }

//     onEnable() {
//         this._registerNodeEvent();
//     }
//     _registerNodeEvent() {
//         this.node.on('size-changed', this._updateSize, this);
//     }

//     _unregisterNodeEvent() {
//         this.node.off('size-changed', this._updateSize, this);
//     }
//     _updateSize() {
//         this._updateRenderTextureSize(this.node.width, this.node.height);
//         this._fboCamera.targetTexture = this._renderTexture;
//         this._fboCamera.orthoSize = this.node.height / 2;
//     }
//     updateTarget() {
//         if (!this.target) {
//             return;
//         }
//         this._targetGroupOld = this.target.group;
//         this._targetAngleOld = 0;
//         this._targetScaleXOld = 0;
//         this._targetScaleYOld = 0;
//         this._targetWidthOld = 0;
//         this._targetHeightOld = 0;

//         this.target.group = this.group;
//         this.node.position = c3d.v3(this.target.x + this.offsetX * this.target.scaleX, this.target.y + this.offsetY * this.target.scaleY, 1);
//     }
//     /**
//      * 重写初始化 RenderTexture 对象，纹理大小为指定尺寸大小
//      * @method _initFBORenderTexture
//      * @private
//      */
//     _initFBORenderTexture() {
//         this._super();
//         this._renderTexture.initWithSize(this.node.width, this.node.height, c3d.gfx.RB_FMT_S8);
//     }
//     /**
//      * 重写初始化 FBO 专用 cc.Camera , 设置 cullingMask，开启自定义大小模式
//      * @method _initFBOCamera
//      * @private
//      */
//     _initFBOCamera() {
//         this._super();
//         this._fboCamera.cullingMask = 0x00000000;
//         this._fboCamera.cullingMask |= ~(1 << this.node.groupIndex);

//         this._fboCamera.alignWithScreen = false;
//         this._fboCamera.orthoSize = this.node.height / 2;
//     }
//     /**
//      * 重写update 生命周期函数，渲染前后更新节点的坐标
//      * @method update
//      */
//     updateFBO() {
//         if (!this.target) {
//             return;
//         }
//         let oldPosition = this.node.position;
//         if (this.syncAngle && this._targetAngleOld != this.target.angle) {
//             this._targetAngleOld = this.target.angle;
//             this.node.angle = this.target.angle = 0;
//         }
//         if (this.syncScale) {
//             if (this._targetScaleXOld != this.target.scaleX) {
//                 this._targetScaleXOld = this.target.scaleX;
//             }
//             if (this._targetScaleYOld != this.target.scaleY) {
//                 this._targetScaleYOld = this.target.scaleY;
//             }
//             this.node.scaleX = this.target.scaleX = 1;
//             this.node.scaleY = this.target.scaleY = 1;
//         }

//         this.node.position = c3d.v3(this.target.x + this.offsetX * this.target.scaleX, this.target.y + this.offsetY * this.target.scaleY, 1);
//         this._fboCamera.orthoSize = this.node.height / 2 * this.target.scaleX;
//         this._super();
//         this._fboCamera.orthoSize = this.node.height / 2;
//         c3d.Camera.main.cullingMask &= ~(1 << this.target.groupIndex);
//         if (this.syncAngle) {
//             this.node.angle = this.target.angle = this._targetAngleOld;
//         }
//         if (this.syncScale) {
//             this.node.scaleX = this.target.scaleX = this._targetScaleXOld;
//             this.node.scaleY = this.target.scaleY = this._targetScaleYOld;
//             // this.node.scaleY *= (this.flipY ? -1 : 1);
//         }
//         this.node.position = c3d.v3(oldPosition.x, oldPosition.y, 1);
//     }
//     __preload() {
//         if (EDITOR) {
//             var Flags = c3d.Object.Flags;
//             this._objFlags |= (Flags.IsScaleLocked | Flags.IsAnchorLocked | Flags.IsPositionLocked);
//         }
//     }
//     onLoad() {
//         this._super();
//         //
//         this.node.group = "clone";
//         this.updateTarget();
//     }
//     onDisable() {
//         this._unregisterNodeEvent();
//         this.target.group = this._targetGroupOld;
//     }
// }